
    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>MySQL体系结构 - 学习卡片</title>
      <style>
        body { font-family: sans-serif; background-color: #f0f8ff; color: #333; display: flex; flex-direction: column; align-items: center; padding: 50px 20px; }
        .header h1 { font-size: 32px; }
        .grid-container { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; width: 100%; max-width: 1200px; }
        .card-container { perspective: 1200px; cursor: pointer; height: 250px; }
        .card { width: 100%; height: 100%; position: relative; transform-style: preserve-3d; transition: transform 0.7s; border-radius: 16px; box-shadow: 0 4px 16px rgba(0,0,0,0.08); }
        .card-container.flipped .card { transform: rotateY(180deg); }
        .card-face { position: absolute; width: 100%; height: 100%; backface-visibility: hidden; display: flex; flex-direction: column; box-sizing: border-box; border-radius: 16px; background-color: #fff; padding: 24px; }
        .card-back { background-color: #f0fff4; transform: rotateY(180deg); justify-content: space-between; }
        .card-category { font-size: 14px; color: #0052d9; margin-bottom: 8px; font-weight: 500; }
        .card-question { font-size: 20px; font-weight: 500; flex-grow: 1; display: flex; align-items: center; justify-content: center; text-align: center; }
        .card-answer-wrapper { flex-grow: 1; overflow-y: auto; }
        .card-answer { font-size: 15px; line-height: 1.7; }
        .card-footer { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 16px; margin-top: 16px; }
        .card-source { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 12px; margin-top: 12px; }
      </style>
    </head>
    <body>
      <div class="header">
        <h1>MySQL体系结构 - 学习卡片</h1>
      </div>
      <div class="grid-container">
        
    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">配置</div>
          <div class="card-question">在Linux系统中，如何查找MySQL会依次读取哪些默认的配置文件路径？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">配置</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">可以通过执行命令 `mysqld --verbose --help|grep -A 1 'Default options'` 来查看。文档中列出的默认路径包括 /etc/my.cnf、/etc/mysql/my.cnf、/usr/etc/my.cnf 以及 ~/.my.cnf，并且排在前面的配置文件优先级更高。</div>
          </div>
          <div class="card-source">来源: Linux查看MySQL配置文件</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">架构</div>
          <div class="card-question">在MySQL的体系架构中，查询分析器（Parser）组件主要负责哪两个核心任务？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">架构</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">查询分析器主要负责两个核心任务：1) 语法解析，检查SQL命令的语法是否正确；2) 词法解析，例如检查查询的表是否存在。</div>
          </div>
          <div class="card-source">来源: MySQL体系架构</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">架构</div>
          <div class="card-question">MySQL的优化器（Optimizer）组件在处理SQL语句时扮演了什么关键角色？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">架构</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">优化器组件的关键角色是优化SQL语句。它会根据SQL语句生成一系列的执行计划，然后从中选择最优的一条来执行。这个过程也包括了判断是否以及如何使用索引。</div>
          </div>
          <div class="card-source">来源: MySQL体系架构</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">根据文档描述，SQL语句在机器中的实际读取和执行顺序是怎样的？请列举出最先和最后处理的两个子句。</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">机器在读取SQL时，最先处理的是 `FROM` 子句，用于选取表并进行连接操作；最后处理的是 `LIMIT` 子句，用于限制返回的行数。</div>
          </div>
          <div class="card-source">来源: SQL语句执行顺序 - 机器读取顺序</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">工具</div>
          <div class="card-question">MySQL的Query Profiler工具有什么作用？以及在使用上有什么需要特别注意的特性？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">工具</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">Query Profiler是一个查询诊断分析工具，可以获取查询在执行过程中的各种资源消耗情况（如CPU、IO等）。需要注意的是，该功能默认是关闭的，开启后只在当前会话中生效。</div>
          </div>
          <div class="card-source">来源: SQL语句执行流程 - 总结</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">特性</div>
          <div class="card-question">什么是MySQL的慢查询日志？它记录查询的阈值由哪个参数控制？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">特性</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">MySQL的慢查询日志是一种用来记录响应时间超过特定阈值的SQL语句的日志功能。这个时间阈值由 `long_query_time` 参数控制。</div>
          </div>
          <div class="card-source">来源: MySQL慢查询日志</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">配置</div>
          <div class="card-question">MySQL的 `long_query_time` 参数的默认值是多少？为什么通常不建议一直开启慢查询日志功能？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">配置</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">`long_query_time` 的默认值是10秒。不建议一直开启慢查询日志，是因为它会或多或少地带来一定的性能影响。</div>
          </div>
          <div class="card-source">来源: MySQL慢查询日志</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">架构</div>
          <div class="card-question">在MySQL的体系架构中，缓存组件（Caches & Buffers）包含哪三种主要的缓存类型？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">架构</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">缓存组件主要包含三种缓存：1) 查询缓存（Query cache），用于缓存经常使用的SQL语句；2) 数据缓存（Data cache），用于将磁盘数据加载到内存中；3) 日志缓存（Log cache），用于通过日志进行恢复记录。</div>
          </div>
          <div class="card-source">来源: MySQL体系架构</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">配置</div>
          <div class="card-question">在Windows的MySQL核心配置文件中，`datadir` 和 `character-set-server` 这两个参数分别定义了什么？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">配置</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">`datadir` 参数定义了数据库根目录的路径，即数据文件的存放位置。`character-set-server` 参数定义了当创建新库或新表时，如果没有显式指定字符集，将使用的默认字符集。</div>
          </div>
          <div class="card-source">来源: win中MySQL配置文件</div>
        </div>
      </div>
    </div>

      </div>
    </body>
    </html>
